package com.suray.rgv60.generate;

import com.suray.basic.wcs.path.core.Node;
import com.suray.basic.wcs.path.enums.NodeType;
import com.suray.commin.core.utils.StringUtils;

import java.util.Map;

/**
 * 节点信息
 */
public class NodeInformation {
    Node node;
    String nodeName;
    String className;
    Integer tag;
    double distanceX;
    double distanceY;

    /**
     * tag : (1, 2, 3) --> 100203,      z:两位，y:3位，x:3位
     * @param node
     * @param nodeDisMap
     */
    NodeInformation(Node node, Map<Node, NodeInformation> nodeDisMap) {
        this.node = node;
        if (node.getGroundCode() != null) {
            tag = node.getGroundCode();
        } else {
            tag = node.getX() * 100000 + node.getY() * 100 + node.getZ();
            node.setGroundCode(tag);
        }

        if (StringUtils.isNotEmpty(node.getRgv60Point())) {
            nodeName = node.getRgv60Point();
        } else {
            if (node.getNodeType().equals(NodeType.P)) {
                nodeName = "AP" + tag;
            } else {
                nodeName = "LM" + tag;
            }
            node.setRgv60Point(nodeName);
        }

        if (nodeName.contains("AP")) {
            className = "ActionPoint";
        } else {
            className = "LocationMark";
        }

        analyzeDistance(node, nodeDisMap);
    }

    void analyzeDistance(Node node, Map<Node, NodeInformation> nodeDisMap) {
        distanceX = node.getSeerMapX().floatValue() / 1000;
        distanceY = node.getSeerMapY().floatValue() / 1000;
    }

//    void analyzeDistance(Node node, Map<Node, NodeInformation> nodeDisMap) {
//        if (nodeDisMap.size() == 0) {
//            distanceX = ((float) node.getOffsetX()) / 1000;
//            distanceY = ((float) node.getOffsetY()) / 1000;
//            return ;
//        }
//
//        if (node.getX() > 1) {
//            Node up = new Node(node.getX() - 1, node.getY(), node.getZ());
//            distanceY += nodeDisMap.get(up).distanceY - ((float) node.getOffsetX()) / 1000;
//        }else if(node.getX() == 1) {
//            if(node.getY() > 1){
//                Node left = new Node(node.getX(), node.getY() - 1, node.getZ());
//                distanceY = nodeDisMap.get(left).distanceY;
//            }
//        }
//
//        if (node.getY() > 1) {
//            Node left = new Node(node.getX(), node.getY() - 1, node.getZ());
//            distanceX += nodeDisMap.get(left).distanceX + ((float) node.getOffsetY()) / 1000;
//        }else if(node.getY() == 1){
//            if(node.getX() > 1){
//                Node up = new Node(node.getX() - 1, node.getY(), node.getZ());
//                distanceX += nodeDisMap.get(up).distanceX;
//            }
//        }
//    }
}
